package com.xinruke.hostels.reservation.user.controller;


import com.xinruke.hostels.common.cache.service.RedisService;
import com.xinruke.hostels.common.constants.BusiConstant;
import com.xinruke.hostels.common.service.CustomerService;
import com.xinruke.hostels.common.vo.AccountLoginVo;
import com.xinruke.hostels.common.vo.ErrorEnum;
import com.xinruke.hostels.common.vo.ResultVO;
import com.xinruke.hostels.common.vo.query.RowsDataVO;
import com.xinruke.hostels.reservation.user.interfaces.dto.UserInfoQueryResultDTO;
import com.xinruke.hostels.reservation.user.service.CartService;
import com.xinruke.hostels.reservation.user.vo.CartVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;


/**
 * @author Chenry
 * @ClassName CartVo
 * @date：2019/6/23
 * @version: V1.0.0
 * @description：购物车业务Controller类
 */
@RestController
@RequestMapping("/cart")
@Api(value = "购物车 API", tags = "购物车 API")
public class CartController {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private CartService cartService;

    @Autowired
    private CustomerService customerService;

    @Autowired
    private RedisService redisService;

    @ApiOperation(value = "获取购物列表")
    @PostMapping(value = "/getCartList")
    public ResultVO<?> getCartList(@ApiParam(name = "X-Auth-Token", value = "登录token", required = false) @RequestHeader(name = "X-Auth-Token", required = false, defaultValue = "") String token,
                                   @RequestBody @Valid CartVo cart) {
        if (StringUtils.isBlank(token)) {
            return new ResultVO(ErrorEnum.ERROR_207.getCode(), ErrorEnum.ERROR_207.getMsg());
        }
        AccountLoginVo info = customerService.getAccountInfo(token);
        if (info == null) {
            //未登录
            return new ResultVO(ErrorEnum.ERROR_205.getCode(), ErrorEnum.ERROR_205.getMsg());
        }
        //用户已登录状态查询购物车
        cart.setHuiyuanId(info.getId());
        cart.setPageSize(Integer.MAX_VALUE);
        ResultVO<RowsDataVO<UserInfoQueryResultDTO>> resultVO = ResultVO.fail();
//        RowsDataVO<UserInfoQueryResultDTO> data = userService.getUserInfoList(userInfoQueryDTO);
//        resultVO.setCode(ResultVO.SUCCESS);
//        resultVO.setMessage("操作成功");
//        resultVO.setData(data);
//        PageInfo<CartResponseVo> resultData = cartService.getCustomerCart(cart);
        return resultVO;
    }

    @ApiOperation(value = "增加购物项")
    @PostMapping(value = "/addCartItem")
    public ResultVO addCartItem(@ApiParam(name = "X-Auth-Token", value = "登录token", required = false) @RequestHeader(name = "X-Auth-Token", required = false, defaultValue = "") String token,
                                @RequestBody @Valid CartVo cart) {
        if (StringUtils.isBlank(token)) {
            return new ResultVO(ErrorEnum.ERROR_207.getCode(), ErrorEnum.ERROR_207.getMsg());
        }
        AccountLoginVo info = customerService.getAccountInfo(token);
        if (info == null) {
            //未登录
            return new ResultVO(ErrorEnum.ERROR_205.getCode(), ErrorEnum.ERROR_205.getMsg());
        }
        Integer flag = 1;
        logger.info("cart addCartItem, request param: token={} cart={}", token, JSONObject.valueToString(cart));
        if (cart.getSkuId() != null) {
            cart.setHuiyuanId(info.getId());
            flag = cartService.addCartItem(cart);
        }
        //1成功 2数量超过限制 3sku不存在 4购物车商品总数超过限制 5购物车不存在 6购物项不存在
        if (flag == 1) {
            return new ResultVO(BusiConstant.SUCCESS, "成功", flag);
        } else if (flag == 2) {
            return new ResultVO(ErrorEnum.ERROR_3002.getCode(), ErrorEnum.ERROR_3002.getMsg());
        } else if (flag == 3) {
            return new ResultVO(ErrorEnum.ERROR_3003.getCode(), ErrorEnum.ERROR_3003.getMsg());
        } else if (flag == 4) {
            return new ResultVO(ErrorEnum.ERROR_3004.getCode(), ErrorEnum.ERROR_3004.getMsg());
        } else if (flag == 5) {
            return new ResultVO(ErrorEnum.ERROR_3005.getCode(), ErrorEnum.ERROR_3005.getMsg());
        } else {
            return new ResultVO(ErrorEnum.ERROR_3006.getCode(), ErrorEnum.ERROR_3006.getMsg());
        }
    }

//    @ApiOperation(value = "删除购物项")
//    @PostMapping(value = "/deleteCartItem")
//    public ResultVO deleteCartItem(@ApiParam(name = "X-Auth-Token", value = "登录token", required = false) @RequestHeader(name = "X-Auth-Token", required = false, defaultValue = "") String token,
//                                   @ApiParam(name = "clientId", value = "客户端Id", required = true) @RequestHeader(name = "clientId", required = true, defaultValue = "") String clientId,
//                                   @RequestBody @Valid CartVo cart) {
//        Integer flag;
//        if (StringUtils.isBlank(token)) {
//            return new ResultVO<Object>(ErrorEnum.ERROR_205);
//        }
//        logger.info("cart deleteCartItem, request param: token={} cart={}", token, JSONObject.toJSONString(cart));
//        if (StringUtils.isNotEmpty(token) && cart.getSkuIdList().size() > 0) {
//            LoginVo info = customerService.getCustomerInfo(JwtTokenUtils.getUsername(token));
//            if (info == null) {
//                return new ResultVO<Object>(ErrorEnum.ERROR_205);
//            }
//            //info.setZid("514f3aa1256243c4a9dbab84cb8f9a8e");
//            //用户已登录状态查询购物车
//            cart.setCustId(info.getId() + "");
//            cart.setClientId("");
//            flag = cartService.deleteCartItem(cart);
//        } else {
//            //用户未登录状态查询购物车
//            if (StringUtils.isEmpty(cart.getClientId())) {
//                cart.setClientId(clientId);
//            }
//            if (StringUtils.isNotEmpty(cart.getClientId()) && cart.getSkuPriceIdList().size() > 0) {
//                flag = cartService.deleteCartItem(cart);
//            } else {
//                return new ResultVO(ErrorEnum.ERROR_3001);
//            }
//        }
//        //1成功 2数量超过限制 3sku不存在 4购物车商品总数超过限制 5购物车不存在 6购物项不存在
//        if (flag == 1) {
//            return new ResultVO(IConstants.SUCCESS, "成功", flag);
//        } else if (flag == 2) {
//            return new ResultVO(ErrorEnum.ERROR_3002);
//        } else if (flag == 3) {
//            return new ResultVO(ErrorEnum.ERROR_3003);
//        } else if (flag == 4) {
//            return new ResultVO(ErrorEnum.ERROR_3004);
//        } else if (flag == 5) {
//            return new ResultVO(ErrorEnum.ERROR_3005);
//        } else {
//            return new ResultVO(ErrorEnum.ERROR_3006);
//        }
//    }
//
//
//    @ApiOperation(value = "增减购物项数量")
//    @PostMapping(value = "/updateCartItemNum")
//    public ResultVO updateCartItemNum(@ApiParam(name = "X-Auth-Token", value = "登录token", required = false) @RequestHeader(name = "X-Auth-Token", required = false, defaultValue = "") String token,
//                                      @ApiParam(name = "clientId", value = "客户端Id", required = true) @RequestHeader(name = "clientId", required = true, defaultValue = "") String clientId,
//                                      @RequestBody @Valid CartVo cart) {
//        Integer flag;
//        if (StringUtils.isBlank(token)) {
//            return new ResultVO<Object>(ErrorEnum.ERROR_205);
//        }
//        logger.info("cart updateCartItemNum, request param: token={} cart={}", token, JSONObject.toJSONString(cart));
////        if (StringUtils.isNotEmpty(token)) {
//        LoginVo info = customerService.getCustomerInfo(JwtTokenUtils.getUsername(token));
//        if (info == null) {
//            return new ResultVO<Object>(ErrorEnum.ERROR_205);
//        }
//        //用户已登录状态查询购物车
//        cart.setClientId("");
//        cart.setCustId(info.getId() + "");
//        flag = cartService.updateCartItemNum(cart);
//    } else
//
//    {
//        //用户未登录状态查询购物车
//        if (StringUtils.isEmpty(cart.getClientId())) {
//            cart.setClientId(clientId);
//        }
//        if (StringUtils.isNotEmpty(cart.getClientId())) {
//            flag = cartService.updateCartItemNum(cart);
//        } else {
//            return new ResultVO(ErrorEnum.ERROR_3001);
//        }
//    }
////1成功 2数量超过限制 3sku不存在 4购物车商品总数超过限制 5购物车不存在 6购物项不存在
//        if(flag ==1)
//
//    {
//        return new ResultVO(IConstants.SUCCESS, "成功", flag);
//    } else if(flag ==2)
//
//    {
//        return new ResultVO(ErrorEnum.ERROR_3002);
//    } else if(flag ==3)
//
//    {
//        return new ResultVO(ErrorEnum.ERROR_3003);
//    } else if(flag ==4)
//
//    {
//        return new ResultVO(ErrorEnum.ERROR_3004);
//    } else if(flag ==5)
//
//    {
//        return new ResultVO(ErrorEnum.ERROR_3005);
//    } else
//
//    {
//        return new ResultVO(ErrorEnum.ERROR_3006);
//    }
//}

//    @ApiOperation(value = "批量增加购物项")
//    @PostMapping(value = "/addCartItemList")
//    public ResultVO addCartItemList(@ApiParam(name = "X-Auth-Token", value = "登录token", required = false) @RequestHeader(name = "X-Auth-Token", required = false, defaultValue = "") String token,
//                                       @ApiParam(name = "clientId", value = "客户端Id", required = true) @RequestHeader(name = "clientId", required = true, defaultValue = "") String clientId,
//                                       @RequestBody @Valid CartVo cart) {
//        Integer flag = 1;
//        if (StringUtils.isBlank(token)) {
//            return new ResultVO<Object>(ErrorEnum.ERROR_205);
//        }
//        logger.info("cart addCartItemList, request param: token={} cart={}", token, JSONObject.toJSONString(cart));
//        if (StringUtils.isNotEmpty(token)) {
//            LoginVo info = customerService.getCustomerInfo(JwtTokenUtils.getUsername(token));
//            if (info == null) {
//                return new ResultVO<Object>(ErrorEnum.ERROR_205);
//            }
//            //info.setZid("514f3aa1256243c4a9dbab84cb8f9a8e");
//            //用户已登录状态
//            cart.setClientId("");
//            cart.setCustId(info.getId() + "");
//            flag = cartService.addCartItem(cart);
//        } else {
//            //用户未登录状态
//            if (StringUtils.isEmpty(cart.getClientId())) {
//                cart.setClientId(clientId);
//            }
//            if (StringUtils.isNotEmpty(cart.getClientId()) && StringUtils.isNotEmpty(cart.getSkuId())) {
//                flag = cartService.addCartItem(cart);
//            } else {
//                return new ResultVO(ErrorEnum.ERROR_3001);
//            }
//        }
//        //1成功 2数量超过限制 3sku不存在 4购物车商品总数超过限制 5购物车不存在 6购物项不存在
//        if (flag == 1) {
//            return new ResultVO(IConstants.SUCCESS, "成功", flag);
//        } else if (flag == 2) {
//            return new ResultVO(ErrorEnum.ERROR_3002);
//        } else if (flag == 3) {
//            return new ResultVO(ErrorEnum.ERROR_3003);
//        } else if (flag == 4) {
//            return new ResultVO(ErrorEnum.ERROR_3004);
//        } else if (flag == 5) {
//            return new ResultVO(ErrorEnum.ERROR_3005);
//        } else {
//            return new ResultVO(ErrorEnum.ERROR_3006);
//        }
//    }
}
